标签: preg-match-all

正则表达式 - PHP外观

我有一个字符串,例如:

$foo = 'Hello __("How are you") I am __("very good thank you")'
Run Code Online (Sandbox Code Playgroud)

我知道这是一个奇怪的字符串,但请跟我一起:P

我需要一个正则表达式来查找__("在这里查找内容")之间的内容并将其放在一个数组中.

即正则表达式会找到"你好吗"和"非常好,谢谢你".

php regex preg-match-all

4
推荐指数
1
解决办法
1590
查看次数

PHP - 带有数组项的括号中的preg_replace项

我有一个数组:

array('id' => 'really')
Run Code Online (Sandbox Code Playgroud)

我有一个字符串:

$string = 'This should be {id} simple.';
Run Code Online (Sandbox Code Playgroud)

我想最终得到:

This should be really simple.
Run Code Online (Sandbox Code Playgroud)

我有一个正常的表达式,可以使用{id}方面,但我很难做我想做的事情.

/{([a-zA-Z\_\-]*?)}/i
Run Code Online (Sandbox Code Playgroud)

{id}可以是任何内容,{foo}或{bar}或与我的正则表达式匹配的任何内容.

我确信目前有一个简单的解决方案正在逃避我.

谢谢,

贾斯汀

php regex preg-replace preg-match-all

4
推荐指数
1
解决办法
3169
查看次数

PHP:意外的PREG_BACKTRACK_LIMIT_ERROR

function recursiveSplit($string, $layer) {
    $err = preg_match_all("/\{(([^{}]*|(?R))*)\}/",$string,$matches);
    echo "Elementi trovati: $err<br>";
    if($err == FALSE) echo "preg_match_all ERROR<br>";

    // iterate thru matches and continue recursive split
    if (count($matches) > 1) {
        for ($i = 0; $i < count($matches[1]); $i++) {
            if (is_string($matches[1][$i])) {
                if (strlen($matches[1][$i]) > 0) {
                    echo "<pre>Layer ".$layer.":   ".$matches[1][$i]."</pre><br />";
                    recursiveSplit($matches[1][$i], $layer + 1);
                }
            }
        }
    }
}

$buffer = "{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}";
recursiveSplit($buffer, 0);
Run Code Online (Sandbox Code Playgroud)

产量

Elementi trovati: 
preg_match_all ERROR
Backtrack limit was exhausted!
Run Code Online (Sandbox Code Playgroud)

此代码给出了PREG_BACKTRACK_LIMIT_ERROR错误...但回溯限制设置为100.000.000.

这是我第一次使用正则表达式,我真的不知道如何解决它.

非常感谢,Marco

php regex preg-match-all

4
推荐指数
1
解决办法
3631
查看次数

PHP:如何通过破折号和括号之间的所有内容拆分字符串。(preg_split 或 preg_match)

几天来我一直在思考这个问题,但似乎没有什么能得到想要的结果。

例子:

$var = "Some Words - Other Words (More Words) Dash-Binded-Word";
Run Code Online (Sandbox Code Playgroud)

想要的结果:

array(
[0] => Some Words
[1] => Other Words
[2] => More Words
[3] => Dash-Bound-Word
)
Run Code Online (Sandbox Code Playgroud)

我能够使用 preg_match_all 使这一切正常工作,但随后“Dash-Bound-Word”也被分解了。试图将它与周围的空格匹配是行不通的,因为它会破坏除破折号外的所有单词。

我使用的 preg_match_all 语句(也打破了破折号绑定词)是这样的:

preg_match_all('#\(.*?\)|\[.*?\]|[^?!\-|\(|\[]+#', $var, $array);
Run Code Online (Sandbox Code Playgroud)

我当然不是 preg_match、preg_split 方面的专家,因此这里的任何帮助将不胜感激。

php regex preg-match-all preg-match preg-split

4
推荐指数
1
解决办法
4198
查看次数

正则表达式匹配%之间的字符串

我正在尝试匹配%s中包含的子字符串,但preg_match_all似乎在同一行中同时包含多个子字符串.

代码如下所示:

preg_match_all("/%.*%/", "%hey%_thereyou're_a%rockstar%\nyo%there%", $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)

这产生以下输出.

Array
(
    [0] => Array
        (
            [0] => %hey%_thereyou're_a%rockstar%
            [1] => %there%
        )

)
Run Code Online (Sandbox Code Playgroud)

但是我希望它能生成以下数组:

[0] => %hey%
[1] => %rockstar%
[2] => %there%
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

php regex preg-match-all

3
推荐指数
1
解决办法
3798
查看次数

正则表达式:获取括号外的内容

我正在使用 PHP,我有这样的文字:

first [abc] middle [xyz] last
Run Code Online (Sandbox Code Playgroud)

我需要了解括号内外的内容。在 StackOverflow 中搜索,我找到了一个模式来获取里面的内容:

preg_match_all('/\[.*?\]/', $m, $s)
Run Code Online (Sandbox Code Playgroud)

现在我想知道获取外部内容的模式。

问候!

php regex preg-match-all

3
推荐指数
1
解决办法
3009
查看次数

使用正则表达式从HTML文档中的链接中提取URL

我需要捕获给定html中的所有链接.

这是示例代码:

<div class="infobar">
    ... some code goes here ...
    <a href="/link/some-text">link 1</a>
    <a href="/link/another-text">link 2</a>
    <a href="/link/blabla">link 3</a>
    <a href="/link/whassup">link 4</a>
    ... some code goes here ...
</div>
Run Code Online (Sandbox Code Playgroud)

我需要把所有环节中div.infobar,与开始/link/

我试过这个:

preg_match_all('#<div class="infobar">.*?(href="/link/(.*?)") .*?</div>#is', $raw, $x);
Run Code Online (Sandbox Code Playgroud)

但它给了我唯一的第一场比赛.

谢谢你的建议.

php regex preg-match-all

3
推荐指数
1
解决办法
2360
查看次数

从字符串php正则表达式中提取大于4位数字

preg_match_all('/(\d{4})/', $text, $matches);
Run Code Online (Sandbox Code Playgroud)

使用上面的函数,我们可以从给定的字符串中提取精确的 4 位数字。

如何使用正则表达式提取包含大于 4 位数字的数字..

有没有办法在正则表达式中指定最小长度?

php regex preg-match-all preg-match

3
推荐指数
1
解决办法
7898
查看次数

如何使用php获取字符串中以“#”开头的单词?

我有这句话

"My name's #jeff,what is thy name?"
Run Code Online (Sandbox Code Playgroud)

现在我想#jeff从这句话中得到。我已经尝试过这段代码

for ($i=0; $i <=substr_count($Text,'#'); $i++) { 
    $a=explode('#', $Text);
    echo $a[$i];
}
Run Code Online (Sandbox Code Playgroud)

但它的回归#jeff,what is thy name?并不是我灵魂所渴望的

php regex string preg-match-all preg-match

3
推荐指数
1
解决办法
781
查看次数

php - 如何从字符串中获取特定值

我在尝试从字符串中提取特定值但未获得正确输出时遇到问题.

$string = com.xyz.ghop.service.sprint.Sprint@1b0258c[id=257,rapidViewId=94,state=CLOSED,name=Alert Success 5,goal=,startDate=2016-08-16T20:20:46.730+05:30,endDate=2016-08-26T20:20:00.000+05:30,completeDate=2016-08-26T21:18:53.928+05:30,sequence=257]
Run Code Online (Sandbox Code Playgroud)

我希望name =中的值直到逗号,我尝试使用preg_match_all,但它只是给出了第一个单词.

这是我试过的:

preg_match_all("/(?=name\=([^\W]+))/", $string, $matches); 
$resulte = implode(",", $matches[1]); 
Run Code Online (Sandbox Code Playgroud)

请帮忙

谢谢

php string preg-match-all

3
推荐指数
2
解决办法
398
查看次数

标签 统计

php ×10

preg-match-all ×10

regex ×9

preg-match ×3

string ×2

preg-replace ×1

preg-split ×1