56165


Wordpressの構築をやっています。  
文字を置換する際の正規表現の読み方がわかりません。  
理解しようとネットで調べて書いてることはなんとなく分かるのですが、コードに向き合うとわかりません。というか読めません、読めないので意味がわかりません。  
特に「/」と「\」の組み合わせがわかりません。  
正規表現に書いてることを話し言葉で解説していただけないでしょうか。

[code]

        $html = preg_replace('/(width|height)="\d*"\s/', '', $html); 
        $html = preg_replace('/class=[\'"]([^\'"]+)[\'"]/i', '', $html); 
        $html = preg_replace('/title=[\'"]([^\'"]+)[\'"]/i', '', $html); 
        $html = preg_replace('/<a href=".+">/', '', $html); 
        $html = preg_replace('/<\/a>/', '', $html); 
    
[/code]

以上、よろしくお願いいたします。


CC BY-SA 4.0
2019-06-28T00:58:42.930
56163
2019-06-28T01:59:20.993
2019-06-28T01:26:21.563
34895
34895
question
php 正規表現 wordpress
正規表現の読み方がわかりません


質問に記載のコードは`preg_replace`でヒットした文字列を全て削除しています。  
（正確には`''`の空文字で置換している状態）  
HTMLのタグの中で指定した属性や、Aタグを削除したいんですかね。

* * *
[code]

    $html = preg_replace('/(width|height)="\d*"\s/', '', $html); 
    
[/code]

`(width|height)`  
"()"でグループ化し、"width"もしくは、"height"を選択します。  
`="\d*"`  
「`=""`」で括られた`\d`(数値)の、`*`(連続最大長)  
`\s`  
半角空白かタブ文字、もしくは改行のいずれかを選択。  
※例(対象となる文字列)：`width="320"`／`height="240"`

* * *
[code]

    $html = preg_replace('/class=[\'"]([^\'"]+)[\'"]/i', '', $html); 
    
[/code]

`[]`  
カッコ内の何れかの1文字にヒットする。`[\'"]`（`'`もしくは、`"`）  
`[^]`  
`^`に続く文字以外の1文字。`[^\'"]`(`'`と`"`以外の文字)  
`+`  
直前の1文字の連続を最長一致。`([^\'"]+)`(`'`と`"`以外の文字を最長一致。逆に言えば`'`か`"`に当たるまで選択)  
`i`  
大文字小文字を区別しない  
※例(対象となる文字列)：`class="test"`／`class='Sample'`

* * *
[code]

    $html = preg_replace('/title=[\'"]([^\'"]+)[\'"]/i', '', $html); 
    
[/code]

前述と同様  
※例(対象となる文字列)：`title="test"`／`title='Sample'`

* * *
[code]

    $html = preg_replace('/<a href=".+">/', '', $html); 
    
[/code]

`.+`  
任意の1文字の連続を最長一致で選択。  
仮に`">`が複数回あった場合、一番最後の`">`にあたるまで選択。

※例(対象となる文字列)：`<a href="https://hogehoge.com">`／  
`<a href="https://hogehoge.com"></a><a href="https://nexthoge.com">`

* * *
[code]

    $html = preg_replace('/<\/a>/', '', $html); 
    
[/code]

`<\/a>`  
`</a>`を選択

* * *

メタ文字に衝突するような`/`は、`\`でエスケープし`\/`にします。  
`\s`や、`\d`は、「メタ文字」で検索するといいです。


CC BY-SA 4.0
2019-06-28T01:35:22.087
56165
2019-06-28T01:59:20.993
2019-06-28T01:59:20.993
7676
7676
56163
answer