PHP:如何在字符串中查找子字符串的开头和结尾?

时间:2010-09-14 04:38:22

标签: php substr strstr

这是一个mysql表字段的内容:

Flash LEDs: 0.5W
LED lamps: 5mm
Low Powers: 0.06W, 0.2W
Remarks(1): this is remark1
----------
Accessories: Light Engine
Lifestyle Lights: Ambion, Crane Fun
Office Lights: OL-Deluxe Series
Street Lights: Dolphin
Retrofits: SL-10A, SL-60A
Remarks(2): this is remark2
----------
Infrared Receiver Module: High Data Rate Short Burst
Optical Sensors: Ambient Light Sensor, Proximity Sensor, RGB Color Sensor
Photo Coupler: Transistor
Remarks(3): this is remark3
----------
Display: Dot Matrix
Remarks(4): this is remark4

现在,我想阅读备注并将它们存储在变量中。备注(1),备注(2)等是固定的。 'this is remark1'等来自表单输入字段,因此它们非常灵活。

基本上我需要的是:阅读'备注(1):'和'--------'之间的所有内容并将其保存在变量中。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

preg_match_all("~Remarks\(([^)]+)\):([^\n]+)~", $str, $m);

ideone

正则表达式将X放在匹配组1中,Y放在匹配组2中(备注(X):Y)

答案 1 :(得分:0)

这将是正则表达式的工作,它允许您完全匹配您的要求表达的规则类型。 Here是适合您的教程。

答案 2 :(得分:0)

使用preg函数或者你可以爆炸和内爆函数来获得正确的结果。不要使用子串,它可能不提供更正。

查询字符串的Implode和Explode函数示例:

    $sdr = "Remarks(4): this is remark4";

    $sdr1 = explode(":",$sdr);
    $frst = $sdr1[0];

    $sdr2 = array_shift($sdr1);

    $secnd = implode(" ", $sdr1);

    echo "First String - ".$frst;
    echo "<br>";
    echo "Second String - ".$secnd;
    echo "<br>";

你的答案:

First String - Remarks(4)

Second String - this is remark4