dapidmini
dapidmini

Reputation: 1625

how to write regex for special character

I want to write a regex that only capture patterns that has /assets/img/myfolder/

for example, this string should get captured :

<img src="/assets/img/myfolder/abc0001.jpg">

and this should not get captured :

<img src="/assets/img/otherfolder/abc0002.jpg">

below is what i tried, but since I hate regex and suck at it, it doesn't capture any patterns at all:

https://regex101.com/r/sxY6OX/2

Upvotes: 0

Views: 44

Answers (2)

Majid Shafaei
Majid Shafaei

Reputation: 59

<?php

$input_lines = <<<EOD
<img src="/assets/img/myfolder/abc0001.jpg">
<img src="/assets/img/otherfolder/abc0002.jpg">
<img src="/assets/img/myfolder/abc0001=2.png">
EOD;

preg_match_all("/(<img\s+src=\s*[\"\\']\/assets\/img\/myfolder\/\S*\.(?:png|jpg)[\"\\']>)/i", $input_lines, $output_array);

print_r($output_array);

Result:

Array
(
    [0] => Array
        (
            [0] => <img src="/assets/img/myfolder/abc0001.jpg">
            [1] => <img src="/assets/img/myfolder/abc0001=2.png">
        )

    [1] => Array
        (
            [0] => <img src="/assets/img/myfolder/abc0001.jpg">
            [1] => <img src="/assets/img/myfolder/abc0001=2.png">
        )

)

And fixed your pattern on regex101.com

preg_match_all("/(<img\s+src=\s*[\"\\']\/assets\/img\/tinymce\/\S*_thumb\.(?:png|jpg)[\"\\']>)/i", $input_lines, $output_array);

Upvotes: 1

Bernhard
Bernhard

Reputation: 424

I fixed your regex:
https://regex101.com/r/sxY6OX/4

you missed the part to match for the thumb name [a-z0-9]*?_thumb

Before:
(<img\s+src\s*=\s*[\"\'](\/assets\/img\/tinymce\/))[a-z0-9]*?_thumb(\.(png|jpg)[\"\']>)
After:
(<img\s+src\s*=\s*[\"\'](\/assets\/img\/tinymce\/)\s)(_thumb)(\.(png|jpg)[\"\']>)

Upvotes: 1

Related Questions