teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

DOM部分の修正

2015/06/18 03:01

投稿

nanndemoiikara
nanndemoiikara

スコア775

answer CHANGED
@@ -1,5 +1,34 @@
1
+ 本当はclassとかにした方がいいと思いますがめんどくさいので。。。
2
+ とりあえずsampleのanchorタグのみ取得です。
3
+ できればbase_urlはfunction内ではなくconfigとかに持たせた方が便利です。
4
+
1
5
  ```lang-php
6
+ <?php
7
+
8
+ /**
9
+ * strip_base_uri
10
+ * @param stirng $str
11
+ * @return string
12
+ **/
13
+ function strip_base_url($str)
14
+ {
2
- $base_url = 'http://localhost/';
15
+ $base_url = 'http://localhost/';
3
- $uri_str = 'http://localhost/hogehoge';
4
- echo str_replace(rtrim($base_url, '/'), '', $uri_str);
16
+ return str_replace(rtrim($base_url, '/'), '', $str);
17
+ }
18
+
19
+ $dom = new DOMDocument;
20
+ $dom->preserveWhiteSpace = false;
21
+ $dom->formatOutput = true;
22
+ @$dom->loadHTMLFile('./hoge.html');
23
+
24
+ //TODO:Anchorだけ?
25
+ $anchors = $dom->getElementsByTagName('a');
26
+ foreach ( $anchors as $val )
27
+ {
28
+ $href_str = $val->getAttribute('href');
29
+ if ( ! $href_str || substr($href_str, 0, 1) === '#' ) continue;
30
+
31
+ $val->setAttribute('href', strip_base_url($href_str));
32
+ }
33
+ echo $dom->saveHTML();
5
34
  ```