0 Câu hỏi: Làm thế nào để ngắt dòng trong XML bằng php?

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi có một tệp XML được kết xuất thành HTML thông qua tập lệnh php. Bởi vì tôi chèn mô tả sản phẩm đi qua API mua sắm trực tuyến.

Trong tệp XML, tôi có một phần tử ( $sản phẩm_short_description ) có thể chứa một số đoạn văn bản. Tuy nhiên, khi cố gắng tạo ngắt dòng trong phần tử, XML sẽ xuất hiện lỗi do thẻ "br /hoặc p". Nói một cách đơn giản, tôi muốn thêm một dấu ngắt dòng trong một phần tử XML. Vấn đề chính của mã hóa dưới đây:

$product_short_description = preg_replace('#<br\s*/?>#i', "\n", $product_short_description);

Dưới đây là tất cả mã hóa của tôi:

 <?php


include '../db_config/db_conn.php';

$sql = 'SELECT c1.entity_id AS product_id, c1.sku, c2.value AS prdNm, 
c3.value AS product_price, 
c5.value AS category_name, c6.value AS weight, c7.value AS image, 
c8.value 
AS description, 
c9.value AS price,c11.value AS shipment_type,c12.value AS 
warranty,c13.value AS short_description
FROM catalog_product_entity c1
LEFT JOIN catalog_product_entity_varchar c2 ON c1.entity_id=c2.entity_id 
AND c2.attribute_id=71
LEFT JOIN catalog_product_entity_decimal c3 ON c1.entity_id=c3.entity_id 
AND c3.attribute_id=75
LEFT JOIN catalog_category_product c4 ON c1.entity_id=c4.product_id
LEFT JOIN catalog_category_entity_varchar c5 ON 
c5.entity_id=c4.category_id AND c5.attribute_id=41
LEFT JOIN catalog_product_entity_decimal c6 ON c1.entity_id=c6.entity_id 
AND c6.attribute_id=80
LEFT JOIN catalog_product_entity_varchar c7 ON c1.entity_id=c7.entity_id 
AND c7.attribute_id=85
LEFT JOIN catalog_product_entity_text c8 ON c1.entity_id=c8.entity_id AND 
c8.attribute_id=72
LEFT JOIN catalog_product_entity_decimal c9 ON c1.entity_id=c9.entity_id 
AND c9.attribute_id=75
LEFT JOIN catalog_product_entity_int c11 ON c1.entity_id=c11.entity_id 
AND 
c11.attribute_id=127
LEFT JOIN catalog_product_entity_int c12 ON c1.entity_id=c12.entity_id 
AND 
c12.attribute_id=154
LEFT JOIN catalog_product_entity_text c13 ON c1.entity_id=c13.entity_id 
AND c13.attribute_id=73
WHERE c1.entity_id = 200

';
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$product_id = $row['product_id'];
$product_sku = $row['sku'];
$product_name = $row['prdNm'];
$product_price = $row['product_price'];
$product_category_name = $row['category_name'];
$product_weight = $row['weight'];
$product_image = $row['image'];
$product_description = $row['description'];
$product_price = $row['price'];
$product_shipment_type = $row['shipment_type'];
$product_warranty = $row['warranty'];
$product_short_description = $row['short_description'];

}

/I'm stuck in here/
$product_short_description = str_replace("#<br\s*/?>#i", "\n", 
$product_short_description);


$curl = curl_init();


curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.11street.my/rest/prodservices/product",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "<?xml version=\"1.0\" encoding=\"UTF-8\" 
standalone=\"yes\"?>
<Product>
<selMthdCd>01</selMthdCd>
<dispCtgrNo>4932</dispCtgrNo>
<prdTypCd>01</prdTypCd>
<prdNm>$product_name</prdNm>
<prdStatCd>01</prdStatCd>
<prdWght>$product_weight</prdWght>
<minorSelCnYn>Y</minorSelCnYn>
<prdImage01>$product_image</prdImage01>
<htmlDetail>$product_short_description</htmlDetail>

 </Product>",
 CURLOPT_HTTPHEADER => array(
 "cache-control: no-cache",
 "content-type: application/xml",
 "openapikey: asdfsdafq2e212ewsadfd",
 ),
 ));

 $response = curl_exec($curl);
 $err = curl_error($curl);

 curl_close($curl);

 echo $response;

Lỗi được hiển thị bên dưới:

Product registration failed Detail Description is required.500

Tôi cố gắng thêm echo để kiểm tra và xem chi tiết sản phẩm_short_description

$product_short_description = preg_replace('#<br\s*/?>#i', "\n", $product_short_description);

echo "$product_short_description";

Đầu ra được hiển thị trong hình dưới đây:

Tôi đã cố gắng thay thế bên dưới mã này

$product_short_description = str_replace("#<br\s*/?>#i", "\n", 
$product_short_description);

thay đổi mã này:

$product_short_description = strip_tags($product_short_description, '<br>');

Đầu ra hiển thị cho tôi:

The product has been successfully registered. Product No: 68932172200

Mặc dù đã được đăng ký thành công nhưng tôi thấy trang web mua sắm trực tuyến của mình cũng không thể ngắt dòng. Sản lượng mua sắm trực tuyến được hiển thị bên dưới:

Hy vọng ai đó có thể giúp tôi giải quyết vấn đề này. Cảm ơn.

    
- 1
  1. Nếu bạn đang chèn nội dung HTML vào tài liệu XML, có lẽ bạn nên bọc nó trong CDATA [/div>
    2019-05-08 06: 56: 30Z
  2. Sử dụng API XML như DOM để tạo tài liệu XML. Bạn tạo XML dưới dạng văn bản mà không thoát đúng - Các ký tự có ý nghĩa đặc biệt trong XML như & sẽ phá vỡ nó.
    2019-05-08 15: 03: 38Z
  3. 0 Câu trả lời                              0                         
nguồn đặt đây
Những câu hỏi khác