如果我有以下字符串
$string = "
0001
a
b
c
d
e
0002
f
g
h
i
j
";
Run Code Online (Sandbox Code Playgroud)
我正在分裂它,$r = preg_split("/\d{4}\n/", $string);并且工作正常,但我也想包括分隔字符串..
就是在这一刻,这给了我
Array [0] {
a
b
c
d
e
}
=> [1] {
f
g
h
i
j
}
Run Code Online (Sandbox Code Playgroud)
但我希望它包括分隔符即
Array [0] {
0001
a
b
c
d
e
}
=> [1] {
0002
f
g
h
i
j
}
Run Code Online (Sandbox Code Playgroud)
希望有意义..
谢谢
背风处
我有一个来自SQL Server的管道分隔转储文件,我想将它导入MySQL.这些行由分隔\r\n,并且该序列也出现在某些字段中!所以我想使用正则表达式来查找实际的行并从中做出INSERT声明.
但是,我在匹配字符串中包含分隔符时遇到问题.我以为使用PREG_SPLIT_DELIM_CAPTURE会做的伎俩,但显然我做错了.我的分隔符是三个空格,后跟三个数字,这实际上是行所需的id:
$ cat test.php
<?
$string = ' 897|a|Hello\r\n 583|b|Line\r\nBreak\r\n 332|c|Yet\r\nMore\r\nLine\r\nBreaks\r\n';
$lines = preg_split( '/ \d{3}\|/', $string, NULL, PREG_SPLIT_DELIM_CAPTURE);
print_r($lines);
$ php test.php
Array
(
[0] =>
[1] => a|Hello\r\n
[2] => b|Line\r\nBreak\r\n
[3] => c|Yet\r\nMore\r\nLine\r\nBreaks\r\n
)
Run Code Online (Sandbox Code Playgroud)
我的分隔符丢失了.
$ php -v
PHP 5.3.3-7+squeeze1 with Suhosin-Patch (cli) (built: Mar 18 2011 17:22:52)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者我如何得到我想要的东西?
请参考下面的代码.
$dArr = '<script>document.write(volunteerDist);</script>';
Run Code Online (Sandbox Code Playgroud)
$ dArr获取志愿者的价值.echo $ dArr打印值4.1,9.4,2.3,4.7,9.1,14.7,3.2,7.1,4.1,0.5
我想把它拆分成一个数组中的元素,所以我使用:
$dArr = preg_split("/,/", $dArr);
Run Code Online (Sandbox Code Playgroud)
但$ dArr是一个只有一个元素的数组,这是所有的值..这意味着没有preg_split发生.我也试过了
$temp=explode(",", $dArr);
Run Code Online (Sandbox Code Playgroud)
但仍然没有奏效.
我试图直接粘贴值(即上面的数字)和preg_split
$temp=explode(",", '4.1,9.4,2.3,4.7,9.1,14.7,3.2,7.1,4.1,0.5');
Run Code Online (Sandbox Code Playgroud)
它很成功.怎么了?请注意,当我回显$ dArr时,会打印数字.
我如何摆脱preg_split结果中的尾随空格而不使用preg_replace先从$test字符串中删除所有空格?
$test = 'One , Two, Thee ';
$test = preg_replace('/\s+/', ' ', $test);
$pieces = preg_split("/[,]/", $test);
Run Code Online (Sandbox Code Playgroud) 下面的代码直接取自PHP:preg_split - Manual
示例#1 preg_split()示例:获取搜索字符串的各个部分
<?php
// split the phrase by any number of commas or space characters,
// which include " ", \r, \t, \n and \f
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>
Run Code Online (Sandbox Code Playgroud)
上面的例子将输出:
Array
(
[0] => hypertext
[1] => language
[2] => programming
)
Run Code Online (Sandbox Code Playgroud)
我正在创建一个标记系统,允许人们在文本框中键入任何内容,并在返回时处理文本并将其插入数据库.数据可以是一个单词或短语,如果键入多个标签,则将使用逗号分割.
因此,我希望能够按原样保留"超文本语言",因此只删除字符串开头和结尾处的空白区域以及逗号后面的任何空白区域,但不能删除可能是短语的单词之间的空白区域.
我是regex的新手,我想在分隔符上分割一个字符串,同时在每个数组元素的开头保留该分隔符.我尝试了它失败了,并提出:
$str = 'LOTS OF STUFF AND SOME MORE STUFF AND SOME OTHER STUFF';
$matches = preg_split('/(\ AND)/', $str, null, PREG_SPLIT_DELIM_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
这将分隔符作为自己的元素:
[0]=>"LOTS OF STUFF"
[1]=>" AND"
[2]=>" SOME MORE STUFF"
[3]=>" AND"
[4]=>" SOME OTHER STUFF"
Run Code Online (Sandbox Code Playgroud)
但我想将分隔符保留在元素的开头:
[0]=>"LOTS OF STUFF"
[1]=>" AND SOME MORE STUFF"
[2]=>" AND SOME OTHER STUFF"
Run Code Online (Sandbox Code Playgroud)
我想也许我可以尝试使用后视,但后来我又丢失了分隔符:
$matches = preg_split('/(?<=\s)AND/', $str, null, PREG_SPLIT_DELIM_CAPTURE);
[0]=>"LOTS OF STUFF"
[1]=>" SOME MORE STUFF"
[2]=>" SOME OTHER STUFF"
Run Code Online (Sandbox Code Playgroud)
会爱一些帮助,谢谢!!
我有一个大概10年前写的PHP脚本.我不记得当时PHP的版本是什么,但是我的脚本工作得很好而没有来自解释器的抱怨.现在,我不得不将我的脚本移动到一个新的Web主机,并且在PHP 7.x下,解释器大声抱怨这个脚本的某一行,我正在寻找一种优雅的方法让它闭嘴.
违规行是: -
list($degrees, $minutes, $seconds) = preg_split("/ /", $coord);
Run Code Online (Sandbox Code Playgroud)
的$coord变量包含在三种形式之一的GPS坐标:"度分秒","小数度分钟"或"小数度".因此,preg_split()可以返回1,2或3个元素.如果它只返回1或2个元素,则解释器会大声抱怨未定义的引用$seconds和/或$minutes.我看到有一个我可以指定的LIMIT参数,preg_split()它给出了返回的最大元素数,但似乎没有一个补充参数来告诉它要返回的MINIMUM元素数.欢迎任何建议.
样本坐标:' - 97.74019'或'-97 44.411'或'-97 44 24.7'
我正在使用preg_split来表示字符串,但我没有获得所需的输出.例如
$string = 'Tachycardia limit_from:1900-01-01 limit_to:2027-08-29 numresults:10 sort:publication-date direction:descending facet-on-toc-section-id:Case Reports';
$vals = preg_split("/(\w*\d?):/", $string, NULL, PREG_SPLIT_DELIM_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
正在产生输出
Array
(
[0] => Tachycardia
[1] => limit_from
[2] => 1900-01-01
[3] => limit_to
[4] => 2027-08-29
[5] => numresults
[6] => 10
[7] => sort
[8] => publication-date
[9] => direction
[10] => descending facet-on-toc-section-
[11] => id
[12] => Case Reports
)
Run Code Online (Sandbox Code Playgroud)
哪个是错的,欲望输出它
Array
(
[0] => Tachycardia
[1] => limit_from
[2] => 1900-01-01
[3] => limit_to
[4] => 2027-08-29 …Run Code Online (Sandbox Code Playgroud) 我有一个数字字符串,我需要从右边开始分成2组,但不要超过3组.
要理解,这三组是'铜','银'和'黄金',起始值是合成金额.例如:
10 - > 10铜
1010 - > 10银和10铜
102030 - > 10金,20银和30铜
1234567891010 - > 123456789金,10银和10铜
如何在PHP中做到这一点?
我正在编写一个搜索引擎.基本上,如果出现某个单词,我需要在该单词之后立即抓住并删除该单词.
如果出现"瑜伽"这个词,我需要在它之后删除这个词,这里是"垫子".所以我会得到:
$sentence="I like yoga mats a lot.";
$word="mats";
$result=I like yoga a lot.
Run Code Online (Sandbox Code Playgroud)
我看过strpos,但需要一个字.我也有preg_split它按名称删除单词,但我还需要按位置删除这个特定的单词.
$separate = preg_split('/\s+/', $sentence);
Run Code Online (Sandbox Code Playgroud)
考虑到它之后的单词并不总是垫子,我怎么能在'瑜伽'之后删除这个单词.我仍然需要很多话.
php ×10
preg-split ×10
regex ×4
preg-replace ×2
arrays ×1
explode ×1
javascript ×1
preg-match ×1
strpos ×1