2

あなたが私を助けてくれることを願っています。

次のような文字列があります

ルカ 1:26-38

そして、SQL クエリで変数を使用できるように、それをトークンまたは個々の変数に分割できるようにしたいと考えています。

爆発を使用してみましたが、: や - などの 1 文字でしか爆発させることができませんでした。

私の文字列には : と - があり、名前と最初の数字の間にスペースもあります。

私の目標は次のとおりです。

    $name = Luke;
    $book = 1;
    $from = 26;  
    $to = 38;

誰でも助けてください。

どうもありがとう

4

4 に答える 4

8

簡単な文字列スキャン(デモ)でそれを行うことができます:

$r = sscanf("Luke 1:26-38", "%s %d:%d-%d", $name, $book, $from, $to);

バリバールには情報が含まれています。%s文字列(スペースなし)、%d10進数を表します。を参照してくださいsscanf


この「聖書を安全」にするために、いくつかの追加の修正が必要です。

$r = sscanf($string, "%[ a-zA-Z] %d:%d-%d", $name, $book, $from, $to);
$name = trim($name);

2番目のデモ)。

于 2012-07-20T07:29:36.323 に答える
3
list( $name, $book, $from, $to ) = preg_split( '/[ :-]/', 'Luke 1:26-38' );

echo $name; //"Luke"

    /* Split results in an Array
(
    [0] => Luke
    [1] => 1
    [2] => 26
    [3] => 38
)
     */
于 2012-07-20T07:25:27.507 に答える
2
$string = "Luke 1:26-38";
preg_match('#^(\w+)\s(\d+):(\d+)-(\d+)$#', $string, $result);
print_r($result);
于 2012-07-20T07:27:18.017 に答える