メシのタネ

Webプログラミング 備忘録

  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む
  • 普通の会社で2年普通に働いて思う事

    えらい寒くなりました。文句言いながらも現職を続けて2017年12月1日にめでたく2年がたちました。分かりやすいが乱暴に言えばITドカタと呼ばれる業界に入って案件のヒエラルキーの無慈悲さを痛感しながらも、それでもしょうがないと頑張る人たちに心を打たれながら「じゃあ俺も」と頑張れない自分に挫折して、とあ[...]

    続きを読む
  • jQueryUiのDatepicker利用時にminDate設定するとバグる件

    題名の通りなんですが、DatepickerでminDate使うとバグります。また後でキャプチャ見て貰いますけど、灰色の部分が、minDateで設定した日付が反復して出るようになるんですね。こういうの気が付かない人がいるかも知れませんが、ChoromeでminDate設定してる人は気にしてみてくだ[...]

    続きを読む

DOMをPHPで操作できたらいいよね

そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。

PHP標準でHTMLをDOMにできるらしい

今、技術検証中ですが、new DOMDocument()とnew DomXpathを利用することで可能なようです。なんでこれやろうかと思ったかといえば、このブログ、イメージをアイキャッチで設定していなかったので、テーマ変えたら画像出ないんですね。なんで、昔の自分は、既製品より使いやすいオリジナルテーマ作れないくせに作ろうと思ったのか小一時間くらい問い詰めてやりたいですね。

DOMにしたい動機

順番違うよねって感じですが、DOMにしたい動機としては、このN1というテーマの前はアイキャッチ設定せずに、記事内にIMGぶち込んでたんですね。一番最初に入れたIMGをアイキャッチとして使おうねってルールでやってました。なので、アイキャッチに設定されているクラスとの齟齬が起きて、レイアウトが若干?崩れるんですよね。TOPの。なのでIMGタグの1件目を取得して、取得したIMGタグのClass書き換えてやろうと思ったんですね。齟齬をなくすために。

さすがにIMGの1件目は取れましたよ。

functions.phpにとりあえず、IMG取得する正規表現書いて、取得したデータの1件目を貰うというプログラムを書きました。

GISTアップしておきます。

PHPでDOM扱うのはちょっと勉強がいる

私が無知なだけなんですけど、jQueryとかの感覚でやれそうな感じなんだけど、上手く行きませんでした。行ってる人教えてください。とりあえず、DOMDocumentのインスタンス作って、そこに読み込みたいHTMLをloadHTMLして、その結果をDomXpathにぶち込んでqueryで検索してからitemの0番目にアクセスしてDOM引き当てて、removeAttributeした後setAttributeでclass合わせればいいでしょうと思ったんですが、removeAttribute使おうとしたときにcall to a member functionが発生。インスタンス作成の順序も間違っていないはずなのに、エラーが出ました。調べたらPHPのバージョンが古いからじゃねって言ってる人がいた<いってない>ので、5.5から7.2に上げましたが、結果は一緒でした。いや、エラーメッセージが変わるだけでした。こっちもGISTやっときましょう。

くわしいひといたら教えてください。

とりあえず、ひたすらコード書いて、サーバー更新したりして、楽しかった。ぶつくさ言ってないでコード書くのもたまにはいいかもしれませんねぇ。
僕は答えにたどりつけませんでしたが、この記事を読んだ人が辿り着けるかもしれないので、自分が見たものリンク貼っときますね。がんばってくだしあ。

PHPネイティブのDOMによるスクレイピング入門
DOMElement::removeAttribute
DOM, XPathを使ったスクレイピング(HTMLのタグ内容取得)
CentOS7のPHPのバージョンを5.4.xから5.6.x/7.0.x/7.1.xに..

しかし、Qiitaわっかりやすいし見やすいっすねー。


関連記事

コメントをお待ちしております