PDA

View Full Version : جداسازی سمی کالن



iliya_s20
سه شنبه 02 تیر 1394, 12:07 عصر
با سلام و خسته نباشید
چطوری می تونم یک رشته رو از طریق سمی کالن جدا کنم (explode) به شرطی که سمی کالن داخل دابل کوتیشن رو بی خیال بشه ؟؟؟؟؟؟

مثلا یه چیزی مثل مثال زیر



<?php
$str = 'this is example test1; "this is; example; test;" this is example test2; this is example test3';رشته بالا به آرایه زیر تبدیل بشه
[0] => 'this is example test1'[1] => '"this is; example; test;" this is example test2'[2] => 'this is example test3'

-سیّد-
سه شنبه 02 تیر 1394, 22:01 عصر
سلام
یه راهش اینه که کاراکتر به کاراکتر روی رشته حرکت کنین، و وقتی به semi-colon رسیدین جدا کنین. حالا این وسط اگه به double-quotation رسیدین، برین جلو تا به double-quotation بعدی برسین:


<?
function myExplode($delimiter, $string) {
$result = array();

$insideQuotation = false;
$lastIndex = 0;
for ($i = 0; $i < strlen($string); $i++) {
$c = $string[$i];
if ($c == '"') {
$insideQuotation = !$insideQuotation;
continue;
}

if ($insideQuotation)
continue;

if ($c == $delimiter) {
$result[] = substr($string, $lastIndex, $i - $lastIndex);
$lastIndex = $i + 1;
}
}

if ($lastIndex != $i)
$result[] = substr($string, $lastIndex, $i - $lastIndex);

return $result;
}

$str = 'this is example test1; "this is; example; test;" this is example test2; this is example test3';
$a = myExplode(';', $str);
print_r($a);

iliya_s20
چهارشنبه 03 تیر 1394, 07:57 صبح
آقا سید دستت درد نکنه . اینو واسه دستورات sql می خوام که وقتی طرف تو textarea دستوراتشو وارد کنه بتونه هر دستورو جدا کنه و اجرا . مثل خود phpmyadmin که یه بخش sql داره
بازم ممنون

H:Shojaei
چهارشنبه 03 تیر 1394, 10:07 صبح
با سلام و خسته نباشید
چطوری می تونم یک رشته رو از طریق سمی کالن جدا کنم (explode) به شرطی که سمی کالن داخل دابل کوتیشن رو بی خیال بشه ؟؟؟؟؟؟

مثلا یه چیزی مثل مثال زیر



<?php
$str = 'this is example test1; "this is; example; test;" this is example test2; this is example test3';رشته بالا به آرایه زیر تبدیل بشه
[0] => 'this is example test1'[1] => '"this is; example; test;" this is example test2'[2] => 'this is example test3'

به این صورت هم میشه:


$string= 'a; b; c; "d; e; f"; g; h';
preg_match_all('/(".*?"|[^";\s]+)(?=\s*;|\s*$)/', $string,$m);
print_r($m);